/**
 *	@file	radio_rocket.c
 *	@brief	ラジオ　ロケット団声明データ生成
 *	@author	Miyuki Iwasawa
 *	@date	07.10.19
 */

#include "common.h"
#include "system/procsys.h"
#include "system/arc_util.h"
#include "system/arc_tool.h"
#include "system/bmp_list.h"
#include "system/bmp_menu.h"
#include "system/pm_str.h"
#include "system/msgdata.h"
#include "system/fontproc.h"
#include "system/snd_tool.h"
#include "system/buflen.h"
#include "system/wordset.h"
#include "system/pm_rtc.h"
#include "application/app_tool.h"
#include "msgdata/msg.naix"

#include "savedata/zukanwork.h"
#include "radio_prog.h"
#include "msgdata/msg_pg_radio.h"
#include "msgdata/msg_radio_p_rocket.h"

typedef struct{
 int heapID;
 u8	seq;
}RADIO_ROCKET_WORK;

static void rocket_ResInit(PM_RADIO_MAN* man);
static void rocket_ResRelease(PM_RADIO_MAN* man);


/**
 *	@brief	ラジオ　ロケット団声明チャンネル　初期化
 *
 *	@param	lv	受信レベル PM_RADIO_RECLV型(RADIO_REC_LV1：弱、RADIO_REC_LV2：強)
 */
int RadioRocket_Init(PM_RADIO_MAN* man)
{
	RADIO_ROCKET_WORK* wk = NULL;

	wk = sys_AllocMemory(man->heapID,sizeof(RADIO_ROCKET_WORK));
	MI_CpuClear8(wk,sizeof(RADIO_ROCKET_WORK));

	man->ch_wk = (void*)wk;

	rocket_ResInit(man);
	Snd_BgmStop(Snd_NowBgmNoGet(),1);

	wk->seq = 0;

	//再生開始
	RADIO_PLAY(SEQ_GS_SENKYO_R);
	return 0;
}

/**
 *	@brief	ラジオ　ロケット団声明チャンネル 解放
 */
int RadioRocket_End(PM_RADIO_MAN* man)
{
	rocket_ResRelease(man);

	MI_CpuClear8(man->ch_wk,sizeof(RADIO_ROCKET_WORK));
	sys_FreeMemoryEz(man->ch_wk);
	man->ch_wk = NULL;

	return 0;
}

/**
 *	@brief	ラジオ　ロケット団声明チャンネル　文字列初期化
 */
int RadioRocket_Play(PM_RADIO_MAN* man)
{
	RADIO_ROCKET_WORK* wk = (RADIO_ROCKET_WORK*)man->ch_wk;

	switch(wk->seq){
	case 0:
		RadioSub_SentencePlay(man,m_rocket_01);
		wk->seq++;
		break;
	case 1:
		if(!RadioSub_SentencePlayWait(man)){
			break;
		}
		wk->seq = 0;
		break;
	}
	return 0;
}

/*
 *	@brief	ロケット団声明チャンネル用 必要なデータを初期化する
 */
static void rocket_ResInit(PM_RADIO_MAN* man)
{
	RADIO_ROCKET_WORK* wk = (RADIO_ROCKET_WORK*)man->ch_wk;

	man->msg_prog = MSGMAN_Create(MSGMAN_TYPE_NORMAL,ARC_MSG,NARC_msg_radio_p_rocket_dat,man->heapID);

	//番組タイトルとDJ名を通知
	MSGMAN_GetString(man->msg_prog,m_rocket_title,man->str_title);
	MSGMAN_GetString(man->msg_prog,m_rocket_dj,man->str_dj);

}

/**
 *	@brief	ロケット団声明チャンネル用　リソース解放
 */
static void rocket_ResRelease(PM_RADIO_MAN* man)
{
	RADIO_ROCKET_WORK* wk = (RADIO_ROCKET_WORK*)man->ch_wk;

	MSGMAN_Delete(man->msg_prog);
}
